/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package robotics;

import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import java.util.logging.Level;
import java.util.logging.Logger;
import robotics.interpretador.IInterpretador;
import robotics.interpretador.InterpretadorLocal;

/**
 *
 * @author fallen
 */
public class InterpretadorRMIStuff {

    private static final String INTERPRETADOR = "Interpretador";

    public static void runRMIServer() {

        if (System.getSecurityManager() == null) {
            System.setSecurityManager(new SecurityManager());
        }
        try {
            InterpretadorLocal ii = new InterpretadorLocal();
            IInterpretador stub = (IInterpretador) UnicastRemoteObject.exportObject(ii, 0);
            LocateRegistry.getRegistry().rebind(INTERPRETADOR, stub);
        } catch (RemoteException ex) {
            Logger.getLogger(InterpretadorRMIStuff.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static IInterpretador getRemoteInterpretador(String host) {
        try {
            Registry registry = LocateRegistry.getRegistry(host);
            return (IInterpretador) registry.lookup(INTERPRETADOR);
        } catch (Exception ex) {
            Logger.getLogger(InterpretadorRMIStuff.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

    public static void main(String[] args) {
        System.out.println("starting rmi server ... ");
        runRMIServer();
        System.out.println("started");
    }
}
